multimap多值查询
🎯 目的:
利用 multimap 的一键多值特性,快速查找某个键 q 所有对应的值。
🔑 核心函数:equal_range(q)
- 用于查找所有 键为
q的元素范围。 - 返回一个
pair<iterator, iterator>,表示一个区间[first, second):range.first:第一个满足key == q的迭代器;range.second:第一个满足key > q的迭代器。
auto range = multimap.equal_range(q);
✅ 如何使用:
auto range = hx.equal_range("a");
vector<string> ans;
for (auto it = range.first; it != range.second; ++it) {
ans.push_back(it->second);
}
- 遍历
[range.first, range.second)区间内所有键为"a"的元素。 - 访问时用
it->second获取对应的值(句子)。
❗ 未命中情况:
当 q 不存在于 multimap 中时:
range.first == range.second
- 返回的是一个 空区间;
for循环不会进入,说明没有任何匹配项。
可以这样判断:
if (range.first == range.second) {
cout << "没有找到" << endl;
}
📦 应用场景:
- 句子首字母缩写匹配;
- 分类标签多值查询;
- 日志记录、反向索引、多对多关系查询等。
⬅️ L2-050 懂蛇语 🏠 00-天梯赛 ➡️ L2-051 满树的遍历
💬 评论